home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
IRIX Base Documentation 1998 November
/
IRIX 6.5.2 Base Documentation November 1998.img
/
usr
/
share
/
catman
/
u_man
/
cat1
/
cvconnect.z
/
cvconnect
Wrap
Text File
|
1998-10-30
|
6KB
|
132 lines
CCCCVVVVCCCCOOOONNNNNNNNEEEECCCCTTTT((((1111MMMM)))) CCCCVVVVCCCCOOOONNNNNNNNEEEECCCCTTTT((((1111MMMM))))
NNNNAAAAMMMMEEEE
cvconnect - The WorkShop Debugger Connection Helper
SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
/usr/lib/WorkShop/cvconnect -h host -n pcsnum -p port
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
_c_v_c_o_n_n_e_c_t is invoked by the WorkShop Debugger and Performance tools in
order to establish a secure connection to the debug server, _c_v_p_c_s. It is
not normally run by users.
SSSSEEEECCCCUUUURRRRIIIITTTTYYYY
The WorkShop tools provide access which is a subset of that provided by
_r_s_h(1). Users may debug or run performance experiments on processes on
their own host, or on any other host in the connected network, subject to
certain constraints. In all cases, the access rights granted to the
session are those of the user ID of the person who begins the session, as
granted to that UID by the system where the target process actually runs.
When the host where the command is typed (the "user" host) is the same as
the host where the target program actually runs (the "target" host),
access is always granted.
When the user host is not the same as the target host ("remote"
debugging), an authentication procedure is conducted before allowing the
session to begin. At the user's end, this procedure is managed by
_c_v_c_o_n_n_e_c_t, which is a set-UID program in order to ensure the security of
this negotiation.
AAAAcccccccceeeessssssss
The rights granted are always those of the user, as determined by the
numeric user ID. For a remote debugging session, these rights are
granted according to the following authentication protocol:
1) _c_v_c_o_n_n_e_c_t initiates a connection to the WorkShop Debugger daemon,
_c_v_p_c_s_d.
2) The daemon checks _c_v_c_o_n_n_e_c_t'_s source port. If the port is not in
the range 512-1023, the daemon aborts the connection.
3) The server checks the client's source address and requests the
corresponding host name (see _g_e_t_h_o_s_t_b_y_a_d_d_r(3N), _h_o_s_t_s(4), and
_n_a_m_e_d(1M)). If the hostname cannot be determined, the connection is
aborted.
4) The daemon confirms that the numeric UID in use by _c_v_c_o_n_n_e_c_t is
defined on the daemon's system, using _g_e_t_p_w_u_i_d(3).
5) The daemon then tries to validate the user using _r_u_s_e_r_o_k(3N), which
uses the file /_e_t_c/_h_o_s_t_s._e_q_u_i_v and the ._r_h_o_s_t_s file found in the
user's home directory. If the user is not the super-user, (user id
0), the file /_e_t_c/_h_o_s_t_s._e_q_u_i_v is consulted for a list of hosts
PPPPaaaaggggeeee 1111
CCCCVVVVCCCCOOOONNNNNNNNEEEECCCCTTTT((((1111MMMM)))) CCCCVVVVCCCCOOOONNNNNNNNEEEECCCCTTTT((((1111MMMM))))
considered ``equivalent''. If the client's host name is present in
this file, the authentication is considered successful. If the
lookup fails, or the user is the super-user, then the file ._r_h_o_s_t_s
in the home directory of the remote user is checked for the machine
name and identity of the user on the client's machine. If this
lookup fails, the connection is terminated. The -l option prevents
_r_u_s_e_r_o_k(3N) from doing any validation based on the user's
``.rhosts'' file, unless the user is the superuser.
6) If necessary, the daemon creates a call socket, forks, sets its UID
and groups to those of _c_v_c_o_n_n_e_c_t and execs _c_v_p_c_s (passing along -l
and -L flags, if any), and records the port ID of the call socket.
If the incoming request is from the same host, user, and debugging
session as an already-running _c_v_p_c_s, the daemon merely looks up this
call socket port number. Either way, the call socket port ID is
then returned to _c_v_c_o_n_n_e_c_t.
7) _C_v_c_o_n_n_e_c_t then calls up _c_v_p_c_s using the call socket ID returned to
it from _c_p_v_c_s_d. The same authentication steps are performed again,
with the additional requirement that the UID of _c_v_c_o_n_n_e_c_t must match
the UID _c_v_p_c_s inherited from _c_v_p_c_s_d.
8) If the authentication passes, _c_v_p_c_s acknowledges the connection.
_C_v_c_o_n_n_e_c_t sends it the port ID originally provided it in its
options, on which the true client has been awaiting a call. _C_v_p_c_s
connects to the true client, and debugging proceeds.
SSSSEEEEEEEE AAAALLLLSSSSOOOO
cvd(1), cvperf(1), cvpcsd(1m), cvpcs(1m) gethostbyaddr (3N), hosts (4),
named (1M)
PPPPaaaaggggeeee 2222